/**
 * 
 */
package py.edu.ucom.cadira.logic;

/**
 * @author largonet
 *
 */
import java.util.ArrayList;
import java.util.Iterator;

import py.edu.ucom.cadira.game.war.Board;
import py.edu.ucom.cadira.game.war.Movement;

public class Estado {
        private Board t;
        private Estado anterior;
        private Movement m;
        private int peso;
        private int piezasEnemigasAntes;
        private int piezasAntes;
        private int sumaDeValorPiezasAntes;
        private int piezasEnemigas;
        private int piezas;
        private int sumaDeValorPiezas;
        private int up;

        public int getUp() {
                return up;
        }

        public void setUp(int up) {
                this.up = up;
        }

        private ArrayList<Estado> estadosHijos;

        public Estado() {
                t = new Board();
                //anterior = new Estado();
                estadosHijos = new ArrayList<Estado>();
                m = new Movement();
                peso = 0;
                up=1;
        }

        public int getPeso() {
                return peso;
        }

        public void setPeso(int pesonuevo) {
                this.peso = peso+pesonuevo;
        }

        public Board getT() {
                return t;
        }

        public void setT(Board t) {
                this.t = t;
        }

        public Estado getAnterior() {
                return anterior;
        }

        public void setAnterior(Estado anterior) {
                this.anterior = anterior;
        }

        public Movement getM() {
                return m;
        }

        public void setM(Movement m) {
                this.m = m;
        }

        public int getPiezasEnemigasAntes() {
                return piezasEnemigasAntes;
        }

        public void setPiezasEnemigasAntes(int piezasEnemigasAntes) {
                this.piezasEnemigasAntes = piezasEnemigasAntes;
        }

        public int getPiezasAntes() {
                return piezasAntes;
        }

        public void setPiezasAntes(int piezasAntes) {
                this.piezasAntes = piezasAntes;
        }

        public int getSumaDeValorPiezasAntes() {
                return sumaDeValorPiezasAntes;
        }

        public void setSumaDeValorPiezasAntes(int sumaDeValorPiezasAntes) {
                this.sumaDeValorPiezasAntes = sumaDeValorPiezasAntes;
        }

        public int getPiezasEnemigas() {
                return piezasEnemigas;
        }

        public void setPiezasEnemigas(int piezasEnemigas) {
                this.piezasEnemigas = piezasEnemigas;
        }

        public int getPiezas() {
                return piezas;
        }

        public void setPiezas(int piezas) {
                this.piezas = piezas;
        }

        public int getSumaDeValorPiezas() {
                return sumaDeValorPiezas;
        }

        public void setSumaDeValorPiezas(int sumaDeValorPiezas) {
                this.sumaDeValorPiezas = sumaDeValorPiezas;
        }

        public void agregarHijo(Estado a) {
                estadosHijos.add(a);
        }

        public ArrayList<Estado> getEstadosHijos() {
                return estadosHijos;
        }

        public Estado getHijoConMayorPeso() {
                Iterator<Estado> it = estadosHijos.iterator();
                int pesoMaximo = -10000;
                Estado eMaxpeso=new Estado();
                while (it.hasNext()) {
                        Estado e = it.next();
                        int pesoActual = e.getPeso();
                        if (pesoActual > pesoMaximo) {
                                e.setPeso(pesoActual);
                                pesoMaximo=pesoActual;
                                eMaxpeso=e;
                        }
                }
                return eMaxpeso;
        }
}

